package main.java.reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
/*
    通过字节码对象获取构造方法对象，并通过构造方法对象构建类的实例对象
 */
public class ConstructorDemo1 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, ClassNotFoundException, InvocationTargetException {
        //获取类的字节码对象（类对象），应用反射的入口
        Class c1=Class.forName("java.lang.Integer");
        //获取类中只有一个int类型参数的构造方法对象
        Constructor constructor = c1.getConstructor(int.class);
        //通过构造方法对象构建类的实例对象(底层new Integer(100))
        Integer o1 =(Integer) constructor.newInstance(100);
        Integer o2 =(Integer) constructor.newInstance(100);
        System.out.println(o1==o2);//false
        //获取类中只有一个String类型参数的构造方法对象
        constructor = c1.getConstructor(String.class);
        Integer o3 =(Integer) constructor.newInstance("100");
        System.out.println(o3);
    }
}
